package com.permission.model;

import java.util.List;

public class PageResult<T> {
    private long total;         // 总记录数（改用long，避免int类型溢出）
    private List<T> data;       // 分页数据
    private int pageNum;        // 当前页码
    private int pageSize;       // 每页条数
    private int pages;          // 总页数

    // 构造方法：完善边缘场景处理
    public PageResult(long total, List<T> data, int pageNum, int pageSize) {
        // 1. 校验参数合法性（避免无效值导致计算错误）
        this.total = Math.max(total, 0); // 总记录数不能为负数
        this.pageNum = Math.max(pageNum, 1); // 当前页至少为1
        this.pageSize = Math.max(pageSize, 1); // 每页条数至少为1（避免除以0）
        this.data = data;

        // 2. 计算总页数（处理无数据的场景）
        if (this.total == 0) {
            this.pages = 0; // 总记录数为0时，总页数为0
        } else {
            // 向上取整公式（兼容大数量，因total已改为long）
            this.pages = (int) ((this.total + this.pageSize - 1) / this.pageSize);
        }
    }

    // getter方法（total返回类型改为long）
    public long getTotal() { return total; }
    public List<T> getData() { return data; }
    public int getPageNum() { return pageNum; }
    public int getPageSize() { return pageSize; }
    public int getPages() { return pages; }
}